// pages/main/pet-care/index.js
const apiService = require('../../../utils/api.js');

Page({

	/**
	 * 页面的初始数据
	 */
	data: {
		// 系统信息
		statusBarHeight: 0,
		
		// 页面来源
		isFromTab: false, // 是否来自底部 tab 切换
		
		// 导航栏滚动状态
		scrollY: 0,
		navbarOpacity: 0,  // 导航栏背景透明度 (0-1)
		navbarTextColor: '#FFFFFF', // 导航栏文字颜色
		
		// 筛选器状态
		storeDropdownOpen: false,
		gradeDropdownOpen: false,
		
		// 筛选选项
		selectedStore: { id: null, name: '加载中...' },
		selectedGrade: { id: 'A级美容师', name: 'A级美容师' },
		
		// 筛选选项列表
		storeList: [],
		gradeList: [
			{ id: 'A级美容师', name: 'A级美容师' },
			{ id: 'B级美容师', name: 'B级美容师' },
			{ id: 'C级美容师', name: 'C级美容师' },
			{ id: '高级洗护师', name: '高级洗护师' },
			{ id: '中级洗护师', name: '中级洗护师' },
			{ id: '初级洗护师', name: '初级洗护师' }
		],
		
		// 美容师列表
		beauticianList: [],
		isLoading: false
	},
	/**
	 * 生命周期函数--监听页面加载
	 */
	onLoad(options) {
		// 防护性检查，避免 Foundation 相关错误
		try {
			this.initPage();

			// 判断页面来源
			this.checkPageSource(options);
			
			// 加载店铺信息
			this.loadStoreList();
			
			this.loadBeauticianList();
		} catch (error) {
			console.error('页面加载错误：', error);
		}
	},

	initPage() {
		console.log('获取系统信息');
		wx.getSystemInfo({
			success: (res) => {
				const menu = wx.getMenuButtonBoundingClientRect();
		
				// 计算筛选器下拉列表的动态位置
				// statusBarHeight(px) -> rpx 转换比例
				const pxToRpxRatio = 750 / res.windowWidth;
				const statusBarHeightRpx = res.statusBarHeight * pxToRpxRatio;
				
				// 计算下拉列表位置：状态栏高度 + 导航栏高度 + 主内容间距 + 卡片内边距 + 筛选器高度 + 下方间距
				const dropdownTop = statusBarHeightRpx + 88 + 30 + 44 + 68 + 18;
				console.log('menuTop', menu.top);
				console.log('menuHeight', menu.height);
				console.log('menuRight', res.windowWidth - menu.left);
				console.log('statusBarHeight', res.statusBarHeight || 44);

				this.setData({
					menuTop: menu.top,
					menuHeight: menu.height,
					menuRight: res.windowWidth - menu.left,
					statusBarHeight: res.statusBarHeight,
					dropdownTop: dropdownTop
				});
			},
			fail: () => {
				console.warn('获取系统信息失败，使用默认状态栏高度');
			}
		});
	},
	/**
	 * 生命周期函数--监听页面初次渲染完成
	 */
	onReady() {

	},

	/**
	 * 生命周期函数--监听页面显示
	 */
	onShow() {
		// 注意：此页面不在TabBar中，无需更新TabBar状态
		console.log('[pet-care页面] 页面显示，无需更新TabBar状态');
	},
	/**
	 * 检查页面来源
	 * @param {Object} options 页面参数
	 */
	checkPageSource(options) {
		// 获取页面栈信息
		const pages = getCurrentPages();
		const currentPageIndex = pages.length - 1;
		
		// 判断是否来自 tab 切换
		let isFromTab = false;
		
		if (pages.length === 1) {
			// 只有一个页面，说明是直接打开或来自 tab
			isFromTab = true;
		} else {
			// 检查前一个页面是否是 tab 页面
			const previousPage = pages[currentPageIndex - 1];
			const tabPages = [
				'pages/home/index/index',
				'pages/booking/equipment-list/index',
				'pages/main/pet-care/index',
				'pages/user/profile/index'
			];
			
			if (previousPage && tabPages.includes(previousPage.route)) {
				isFromTab = true;
			}
		}
		
		// 如果页面参数中有特殊标记，说明是从其他页面跳转过来的
		if (options.storeInfo || options.beauticianId || options.from) {
			isFromTab = false;
		}
		
		this.setData({
			isFromTab
		});
		
		console.log('美容预约页面来源判断:', { isFromTab, pageStackLength: pages.length, options });
	},

	/**
	 * 加载店铺列表
	 */
	async loadStoreList() {
		try {
			// 获取店铺列表
			const storeManager = getApp().getStoreManager();
			const storeList = await storeManager.getStoreList();
			const result = { success: true, data: storeList };
			if (result.success && result.data && result.data.length > 0) {
				const storeList = result.data.map(store => ({
				id: store.storeId || store._id,
				name: store.name
			}));
				
				// 默认选择第一个店铺
				const selectedStore = storeList[0];
				
				this.setData({
					storeList: storeList,
					selectedStore: selectedStore
				});
			} else {
				// 降级处理：使用默认店铺信息
				this.setData({
					selectedStore: { id: 'store_001', name: '超级泡泡宠物店' },
					storeList: [{ id: 'store_001', name: '超级泡泡宠物店' }]
				});
			}
		} catch (error) {
			console.error('加载店铺列表失败:', error);
			// 降级处理：使用默认店铺信息
			this.setData({
				selectedStore: { id: 'store_001', name: '超级泡泡宠物店' },
				storeList: [{ id: 'store_001', name: '超级泡泡宠物店' }]
			});
		}
	},

	/**
	 * 加载美容师列表
	 */
	async loadBeauticianList() {
		this.setData({
			isLoading: true
		});

		try {
			// 获取当前选中门店的ID
			const storeId = this.data.selectedStore.id;
			// 获取当前选中的等级
			const grade = this.data.selectedGrade.id;
			
			// 调用员工API获取美容师列表
			const result = await apiService.getEmployeeList(storeId, grade);
			
			if (result.success && result.data && result.data.length > 0) {
				// 转换员工数据为美容师数据格式
				const beauticianList = result.data.map(employee => ({
					id: employee._id,
					name: employee.name,
					grade: employee.title || 'A级美容师',
					avatar: employee.avatar || '',
					tags: employee.tags || ['专业服务'],
					price: this.getPriceByGrade(employee.title),
					storeId: employee.storeId,
					status: employee.status
				}));
				
				this.setData({
					beauticianList: beauticianList,
					isLoading: false
				});
			} else {
				// 没有找到美容师数据
				this.setData({
					beauticianList: [],
					isLoading: false
				});
				console.log('暂无美容师数据');
			}
		} catch (error) {
			console.error('加载美容师列表失败:', error);
			this.setData({
				beauticianList: [],
				isLoading: false
			});
			// 显示错误提示
			wx.showToast({
				title: '加载失败，请重试',
				icon: 'none'
			});
		}
	},

	/**
	 * 根据美容师等级获取价格
	 */
	getPriceByGrade(title) {
		if (!title) return 108;
		
		if (title.includes('A级美容师')) {
			return 158;
		} else if (title.includes('B级美容师')) {
			return 128;
		} else if (title.includes('C级美容师')) {
			return 108;
		} else if (title.includes('高级洗护师')) {
			return 88;
		} else if (title.includes('中级洗护师')) {
			return 68;
		} else if (title.includes('初级洗护师')) {
			return 48;
		}
		
		return 108; // 默认价格
	},

	/**
	 * 返回上一页
	 */
	onBack() {
		console.log('=== 美容预约页面点击返回按钮 ===', { isFromTab: this.data.isFromTab });
		
		if (this.data.isFromTab) {
			// 来自 tab 切换，返回首页
			wx.switchTab({
				url: '/pages/home/index/index',
				success: () => {
					console.log('从美容预约页面返回首页成功');
				},
				fail: (error) => {
					console.error('返回首页失败：', error);
					// 降级处理：如果切换失败，尝试重定向到首页
					wx.reLaunch({
						url: '/pages/home/index/index'
					});
				}
			});
		} else {
			// 来自其他页面跳转，返回上一页
			wx.navigateBack({
				delta: 1,
				success: () => {
					console.log('美容预约页面返回上一页成功');
				},
				fail: (error) => {
					console.error('返回上一页失败：', error);
					// 如果返回失败，可能是第一个页面，跳转到首页
					wx.switchTab({
						url: '/pages/home/index/index',
						fail: (switchError) => {
							console.error('切换到首页也失败：', switchError);
							// 最后的降级处理
							wx.reLaunch({
								url: '/pages/home/index/index'
							});
						}
					});
				}
			});
		}
	},

	/**
	 * 切换门店下拉列表
	 */
	onToggleStoreDropdown() {
		this.setData({
			storeDropdownOpen: !this.data.storeDropdownOpen,
			gradeDropdownOpen: false // 关闭另一个下拉列表
		});
	},

	/**
	 * 切换美容师等级下拉列表
	 */
	onToggleGradeDropdown() {
		this.setData({
			gradeDropdownOpen: !this.data.gradeDropdownOpen,
			storeDropdownOpen: false // 关闭另一个下拉列表
		});
	},

	/**
	 * 选择门店
	 */
	onSelectStore(e) {
		const storeId = e.currentTarget.dataset.storeId;
		const selectedStore = this.data.storeList.find(store => store.id === storeId);
		
		if (selectedStore && selectedStore.id !== this.data.selectedStore.id) {
			this.setData({
				selectedStore,
				storeDropdownOpen: false
			});
			
			// 重新加载美容师列表
			this.loadBeauticianList();
		} else {
			// 关闭下拉列表
			this.setData({
				storeDropdownOpen: false
			});
		}
	},

	/**
	 * 选择美容师等级
	 */
	onSelectGrade(e) {
		const gradeId = e.currentTarget.dataset.gradeId;
		const selectedGrade = this.data.gradeList.find(grade => grade.id === gradeId);
		
		if (selectedGrade && selectedGrade.id !== this.data.selectedGrade.id) {
			this.setData({
				selectedGrade,
				gradeDropdownOpen: false
			});
			
			// 重新加载美容师列表
			this.loadBeauticianList();
		} else {
			// 关闭下拉列表
			this.setData({
				gradeDropdownOpen: false
			});
		}
	},

	/**
	 * 关闭所有下拉列表
	 */
	onCloseDropdowns() {
		this.setData({
			storeDropdownOpen: false,
			gradeDropdownOpen: false
		});
	},

	/**
	 * 预约美容师
	 */
	onBooking(e) {
		const beauticianId = e.currentTarget.dataset.beauticianId;
		const beautician = this.data.beauticianList.find(item => item.id === beauticianId);
		
		if (!beautician) {
			wx.showToast({
				title: '美容师信息错误',
				icon: 'none'
			});
			return;
		}
		
		this.navigateToPetCareDetail(beautician);
	},

	/**
	 * 查看更多门店
	 */
	onViewMoreStores() {
		wx.navigateTo({
			url: '/pages/store/store-list/index'
		});
	},

	/**
	 * 点击美容师卡片
	 */
	onBeauticianCardTap(e) {
		const beauticianId = e.currentTarget.dataset.beauticianId;
		const beautician = this.data.beauticianList.find(item => item.id === beauticianId);
		
		if (!beautician) {
			wx.showToast({
				title: '美容师信息错误',
				icon: 'none'
			});
			return;
		}
		
		this.navigateToPetCareDetail(beautician);
	},

	/**
	 * 跳转到美容预约详情页面
	 */
	navigateToPetCareDetail(beautician) {
		// 跳转到预约表单页面，传递门店和美容师信息
		wx.navigateTo({
			url: `/pages/booking/pet-care-detail/index?storeId=${this.data.selectedStore.id}&beauticianId=${beautician.id}`,
			success: () => {
				console.log('跳转到预约表单页面成功');
			},
			fail: (error) => {
				console.error('跳转失败:', error);
				wx.showToast({
					title: '跳转失败，请重试',
					icon: 'none'
				});
			}
		});
	},

	/**
	 * 生命周期函数--监听页面隐藏
	 */
	onHide() {

	},

	/**
	 * 生命周期函数--监听页面卸载
	 */
	onUnload() {

	},

	/**
	 * 页面相关事件处理函数--监听用户下拉动作
	 */
	onPullDownRefresh() {
		this.loadBeauticianList().finally(() => {
			wx.stopPullDownRefresh();
		});
	},

	/**
	 * 页面上拉触底事件的处理函数
	 */
	onReachBottom() {
		// 这里可以实现分页加载更多美容师
	},

	/**
	 * 页面滚动监听
	 */
	onPageScroll(e) {
		const scrollY = e.scrollTop;
		
		// 计算导航栏背景透明度，滚动距离0-200px内从透明变为不透明
		const maxScrollDistance = 100; // 滚动距离阈值（像素）
		const opacity = Math.min(scrollY / maxScrollDistance, 1);
		
		// 计算文字颜色，透明度达到0.5时开始变黑
		const textColor = opacity >= 0.5 ? '#120E0C' : '#FFFFFF';
		
		// 只有在透明度或文字颜色发生变化时才更新
		if (this.data.navbarOpacity !== opacity || this.data.navbarTextColor !== textColor) {
			this.setData({
				scrollY: scrollY,
				navbarOpacity: opacity,
				navbarTextColor: textColor
			});
		}
	},

	/**
	 * 更新TabBar状态的统一方法
	 * @param {number} selectedIndex TabBar选中索引
	 */
	updateTabBarStatus(selectedIndex) {
		console.log(`美容预约页面更新TabBar状态: ${selectedIndex}`);
		
		if (typeof this.getTabBar === 'function') {
			// 多重保障的TabBar状态更新
			try {
				const tabBar = this.getTabBar();
				if (tabBar) {
					// 传统模式
					console.log('传统模式更新TabBar');
					if (tabBar.setSelected) {
						tabBar.setSelected(selectedIndex);
					} else {
						tabBar.setData({ selected: selectedIndex });
					}
				} else {
					// skyline模式 - 异步回调
					console.log('Skyline模式异步更新TabBar');
					this.getTabBar((tabBar) => {
						if (tabBar) {
							if (tabBar.setSelected) {
								tabBar.setSelected(selectedIndex);
							} else {
								tabBar.setData({ selected: selectedIndex });
							}
						}
					});
				}
			} catch (error) {
				console.error('TabBar状态更新失败:', error);
				// 降级处理：尝试异步调用
				try {
					this.getTabBar((tabBar) => {
						if (tabBar) {
							if (tabBar.setSelected) {
								tabBar.setSelected(selectedIndex);
							} else {
								tabBar.setData({ selected: selectedIndex });
							}
						}
					});
				} catch (asyncError) {
					console.error('TabBar异步更新也失败:', asyncError);
				}
			}
		} else {
			console.warn('getTabBar方法不可用');
		}
	},

	/**
	 * 用户点击右上角分享
	 */
	onShareAppMessage() {
		return {
			title: '美容预约 - 专业美容师为您服务',
			path: '/pages/main/pet-care/index'
		};
	}
})